package modifyx

import "strings"

func NewRoot(source *Source) *Root {
	obj := &Root{}
	obj.Object = NewObject(source)
	return obj
}

type Root struct {
	*Object
}

func (s *Root) RefData() map[string]interface{} {
	return s.sourceData
}
func (s *Root) RefClassId() string {
	return s.source.id
}

func (s *Root) RefClassKey() string {
	return s.source.ClassKey()
}

func (s *Root) RefClassKind() string {
	return s.source.ClassKind()
}

func (s *Root) Source() *Source {
	return s.source
}

// 重置版本和host
func (s *Root) RefReset() {
	// 重置版本号, 取值时会重新从pool更新数据
	s.source.pools.versions = map[string]int{}
	s.source.pools.root = nil
}

func (s *Root) RefResetVersion() {
	// 重置版本号, 取值时会重新从pool更新数据
	s.source.pools.versions = map[string]int{}
}

func (s *Root) RefDispose() {
	s.source.Dispose()
	s.source = nil
	s.sourceData = nil
}

func (s *Root) GetPools() *PoolList {
	return s.source.GetPools()
}

func ParseKey(key string) (kind, id string) {
	arr := strings.Split(key, "/")
	kind = arr[0]
	id = arr[1]
	return
}
